Amazon Bedrock Prompt Management が一般提供開始になりました

Amazon Bedrock Prompt Management が一般提供開始になりました

Clock Icon2024.11.08

こんにちは。森田です。

以下のアップデートで Amazon Bedrock Prompt Management が GA となりました!

https://aws.amazon.com/about-aws/whats-new/2024/11/amazon-bedrock-prompt-management-available/

Amazon Bedrock Prompt Management については、以前よりプレビューとして公開はされていましたが、GAのタイミングで新しい機能が利用できるようになっています。

プレビュー時との比較

GAで以下の機能が新たに利用可能になりました。

  • モデル呼び出し時のプロパティ指定が拡大
    • システムプロンプト、会話履歴、ツール構成の指定が可能に
  • 作成した Prompt をモデル呼び出し時に指定可能
    • Converse API、InvokeModel APIで利用可能

プレビュー時の詳細については以下をご参照ください。

https://dev.classmethod.jp/articles/amazon-bedrock-prompt-management-preview/

モデル呼び出し時のプロパティ指定可能

では、追加された内容を AWS マネジメントコンソールから確認していきます。

以下のように新たに「System instructions」が追加されており、システムプロンプトについては、こちらに記述します。

スクリーンショット_2024-11-08_14_28_32.png

会話履歴については、「Prompt」下部の「Add message」をクリックすることで以下のように複数のメッセージを追加できます。

スクリーンショット 2024-11-08 14.44.09.png

ページ下部に「Test variables」があり、プロンプト内でプレースホルダーが使用された変数が表示されます。

1点ハマりポイントとして、以前の会話履歴や User message 内のプレースホルダーは認識しますが、System instructions のプレースホルダーを認識してくれません。

スクリーンショット 2024-11-08 21.26.50.png

なお、コンソール上では認識されませんが、APIからはプレースホルダーを認識して、期待した動作をしてくれます。

作成した Prompt をモデル呼び出し時に指定可能

従来までは、「Bedrock Prompt Management」では、プロンプトの管理だけが行える機能となっており、プロンプトを利用する際には、モデル呼び出し前にAPIでプロンプトを取得して、モデル呼び出しAPIにプロンプト情報を指定する必要がありました。

今回のアップデートで、上記が不要となり、API実行時に Prompt ARN を指定するだけで利用することができるようになりました!

Converse API

以下のコードは、Converse APIでの実行例です。

import json
import boto3

bedrock = boto3.client('bedrock-runtime', region_name='us-west-2')

modelId = "Prompt ARN"

promptVariables = {
    "name":{
        "text": "カレー"
    },
    "number":{
        "text": "10"
    },
    "language":{
        "text": "英語"
    }
}

response = bedrock.converse(
    modelId=modelId,
    promptVariables=promptVariables
)

print(response["output"]["message"]["content"][0]["text"])

modelIdには以下の Prompt ARN を指定することで利用ができます。

貼り付けた画像_2024_11_08_22_07.png

また、promptVariablesで変数の値を指定することができます。

InvokeModel API

InvokeModel APIでも利用可能です。

import json
import boto3

bedrock = boto3.client('bedrock-runtime', region_name='us-west-2')

modelId = "Prompt ARN"

promptVariables = {
    "name":{
        "text": "カレー"
    },
    "number":{
        "text": "10"
    },
    "language":{
        "text": "英語"
    }
}

body = json.dumps({
   "promptVariables":promptVariables
})

response = bedrock.invoke_model(body=body, modelId=modelId)
response_body = json.loads(response.get('body').read())
print(response_body["content"][0]["text"])

InvokeModel APIでは、promptVariablesをJSON形式にする必要があるため、基本Converse APIを利用したいですね。

まとめ

GAに伴い、「Prompt Management」が非常に使いやすくなりました!

特にいいなと思ったのは、プロンプト、モデル、プロパティといった本来コード上で指定が必要な部分をAWSコンソール上から管理できるという点です。

コードについては、作成した Prompt ARN を指定しておき、後からコンソール上で変更するといった運用ができるようになります。

また、バージョン管理もできるため、プロンプト運用も楽に行えます。

ぜひ新しくなった「Prompt Management」を使ってみてください!

参考

https://aws.amazon.com/blogs/machine-learning/amazon-bedrock-prompt-management-is-now-available-in-ga/

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.